home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / gnu / glibc108.gz / glibc108 / glibc-1.08.1 / sysdeps / alpha / divqu.S < prev    next >
Text File  |  1993-12-23  |  970b  |  58 lines

  1.       /* This file is generated from divrem.m4; DO NOT EDIT! */
  2. /* For each N divided by D, we do:
  3.       result = (double) N / (double) D
  4.    Then, for each N mod D, we do:
  5.       result = N - (D * divMODE (N, D))
  6.  
  7.    FIXME:
  8.    The q and qu versions won't deal with operands > 50 bits.  We also
  9.    don't check for divide by zero.  */
  10.  
  11. #include "DEFS.h"
  12. #if 0
  13. /* We do not handle div by zero yet.  */
  14. #include <machine/pal.h>
  15. #endif
  16. #include <regdef.h>
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23. FUNC__(divqu)
  24.     ! First set up the dividend.
  25.     
  26.     stq t10,0(sp)
  27.     ldt $f10,0(sp)
  28.     cvtqt $f10,$f10
  29.         ldit    $f26, 18446744073709551616.0
  30.     addt    $f26, $f10, $f26
  31.     fcmovlt    $f10, $f26, $f10
  32.  
  33.  
  34.     ! Then set up the divisor.
  35.     
  36.     stq t11,0(sp)
  37.     ldt $f1,0(sp)
  38.     cvtqt $f1,$f1
  39.         ldit    $f26, 18446744073709551616.0
  40.     addt    $f26, $f1, $f26
  41.     fcmovlt    $f1, $f26, $f1
  42.  
  43.  
  44.     ! Do the division.
  45.     divt $f10,$f1,$f10
  46.     cvttqc $f10,$f10
  47.  
  48.     ! Put the result in t12.
  49.     stt $f10,0(sp)
  50.     ldq t12,0(sp)
  51.     
  52.  
  53.     
  54.  
  55.     lda sp,16(sp)
  56.     ret zero,(t9),1
  57.     .end NAME__(divqu)
  58.